{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "fe35686d",
   "metadata": {},
   "source": [
    "第一步：加载数据集"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "c4b88b3a",
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "\n",
    "data_file = 'http://lib.stat.cmu.edu/datasets/boston'\n",
    "raw_df = pd.read_csv(data_file, sep='\\\\s+', header=None, skiprows=22)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "bd415455",
   "metadata": {},
   "source": [
    "第二步：提取数据集"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "98a9785e",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "特征形状: (506, 13)\n",
      "标签形状: (506,)\n"
     ]
    }
   ],
   "source": [
    "raw_array = raw_df.values\n",
    "x = np.hstack([raw_array[::2,:], raw_array[1::2,:2]])\n",
    "y = raw_array[1::2,2]\n",
    "print(f\"特征形状: {x.shape}\") # 应该是 (506, 13)\n",
    "print(f\"标签形状: {y.shape}\") # 应该是 (506,)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d7a2cd81",
   "metadata": {},
   "source": [
    "第三步：分割数据集"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "1b08a0f6",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "训练集特征形状: (354, 13)\n",
      "测试集特征形状: (152, 13)\n",
      "训练集标签形状: (354,)\n",
      "测试集标签形状: (152,)\n"
     ]
    }
   ],
   "source": [
    "from sklearn.model_selection import train_test_split\n",
    "x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.3, random_state=1)\n",
    "print(f\"训练集特征形状: {x_train.shape}\") # 应该是 (354, 13)\n",
    "print(f\"测试集特征形状: {x_test.shape}\") # 应该是 (152, 13)\n",
    "print(f\"训练集标签形状: {y_train.shape}\") # 应该是 (354,)\n",
    "print(f\"测试集标签形状: {y_test.shape}\") # 应该是 (152,)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "fdcfeb10",
   "metadata": {},
   "source": [
    "第四步：初始化一个字典列表，用来存储三种模型的训练结果"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "6b20ce29",
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.linear_model import LinearRegression, Ridge, Lasso\n",
    "model_list = [\n",
    "    {\n",
    "        'model': LinearRegression(),\n",
    "        'name': '线性回归',\n",
    "        'scores': []\n",
    "    },\n",
    "    {\n",
    "        'model': Ridge(),\n",
    "        'name': '岭回归', \n",
    "        'scores': []\n",
    "    },\n",
    "    {\n",
    "        'model': Lasso(),\n",
    "        'name': '套索回归',\n",
    "        'scores': []\n",
    "    }\n",
    "]\n",
    "\n",
    "alphas = [0.0001, 0.0005, 0.001, 0.005, 0.01, 0.05, 0.1, 0.5, 1,5, 10, 50]"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ded385c1",
   "metadata": {},
   "source": [
    "第五步：线性回归模型"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "c3595b20",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "线性回归模型的预测准确率为：0.78363\n"
     ]
    }
   ],
   "source": [
    "from sklearn.linear_model import LinearRegression\n",
    "model_item = model_list[0] #线性回归\n",
    "\n",
    "for alpha in alphas:\n",
    "    model_item['model'].fit(x_train, y_train)\n",
    "    score = model_item['model'].score(x_test, y_test)\n",
    "    model_item['scores'].append(score)\n",
    "\n",
    "print(f\"线性回归模型的预测准确率为：{model_item['scores'][0]:.5f}\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b955cda0",
   "metadata": {},
   "source": [
    "第六步：岭回归模型"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "d5c4b968",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "岭回归模型在不同alpha值下的预测准确率为：[0.7836312616462102, 0.7836381485742399, 0.783646744591376, 0.7837150101807471, 0.7837991009786623, 0.7844251396369007, 0.7851038126487191, 0.7880378162997098, 0.7890510666829776, 0.7866632469091702, 0.7830864131993094, 0.7633834238166022]\n"
     ]
    }
   ],
   "source": [
    "model_item = model_list[1] #岭回归\n",
    "\n",
    "for alpha in alphas:\n",
    "    model_item['model'].alpha = alpha\n",
    "    model_item['model'].fit(x_train, y_train)\n",
    "    score = model_item['model'].score(x_test, y_test)\n",
    "    model_item['scores'].append(score)\n",
    "    \n",
    "print(f\"岭回归模型在不同alpha值下的预测准确率为：{model_item['scores']}\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e94c258e",
   "metadata": {},
   "source": [
    "第七步：套索回归模型"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "18a21d3d",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "套索回归模型在不同alpha值下的预测准确率为：[0.78365200458206, 0.7837411417548366, 0.7838509402682294, 0.78466420872484, 0.7855180427558521, 0.7857332920691229, 0.7793374045694275, 0.7390320547059954, 0.6694782854622285, 0.5440960934768317, 0.5095038853057026, 0.27693710538868743]\n"
     ]
    }
   ],
   "source": [
    "model_item = model_list[2] #套索回归\n",
    "\n",
    "for alpha in alphas:\n",
    "    model_item['model'].alpha = alpha\n",
    "    model_item['model'].fit(x_train, y_train)\n",
    "    score = model_item['model'].score(x_test, y_test)\n",
    "    model_item['scores'].append(score)\n",
    "    \n",
    "print(f\"套索回归模型在不同alpha值下的预测准确率为：{model_item['scores']}\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "493482bf",
   "metadata": {},
   "source": [
    "第八步：绘制画板，对比三种模型的预测准确率"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "2fe269ab",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "线性回归模型的最大预测准确率为：0.7836295385076292\n",
      "岭回归模型的最大预测准确率为：0.7890510666829776\n",
      "套索回归模型的最大预测准确率为：0.7857332920691229\n"
     ]
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 1000x700 with 3 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "\n",
    "plt.rcParams['font.sans-serif'] = ['Hiragino Sans GB']\n",
    "fig = plt.figure(figsize=(10,7))\n",
    "for i, model_item in enumerate(model_list):\n",
    "    plt.subplot(2, 2, i+1)\n",
    "    plt.plot(range(len(alphas)), model_item['scores'], 'g-')\n",
    "    plt.title(model_item['name'])\n",
    "    score_max = max(model_item['scores'])\n",
    "    print(f\"{model_item['name']}模型的最大预测准确率为：{score_max}\")\n",
    "plt.show()"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "ml-course",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.12.11"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
